Thread pro COM out-process object

Otázka od: Jan Křížek

18. 10. 2002 10:47

Zdravim

delam program, ktery ma v sobe COM objekt, ktery si jina aplikace muze
vytvorit a pouzit. Jako factory jsem pouzil TComObjectFactory, ktery
vytvarim v initialization unity. Jako threading model jsem pouzil
Apartment a potreboval bych ovlivnit v jakem threadu se mi budou metody
objektu spoustet. Zatim se mi spousti v hlavnim, jenomze ja potrebuji
uvnitr volani pockat na nejakou cinnost uzivatele. Toho jsem dosahl
zatim jen volanim Application.ProcessMessages, ale idealni by bylo mit
druhy thread ve kterem by se mi metody spousteli a s aplikaci by se
synchronizoval pomoci Eventu. Jde to v delphi udelat? Jestli jsem
pochopil spravne, tak by takovy thread musel mit vlastni smycku zprav.
Je to v delphi nejak podporovano?

Dik Honza +
D5Prof.

Odpovedá: Malecek Ondrej

18. 10. 2002 12:30

Primo neni, je potreba mit paralelni thread, ktery splnuje vlastnosti (chova
se jako) COM apartment threadu. Docela hezke povidani na toto tema je na:
http://www.techvanguards.com/com/concepts/multithreading.htm
Dale asi narazis na problem s tim, ze budes potrebovat, aby i vytvateni
instance COM objektu bezelo z tohoto threadu => je treba v apartment threadu
vytvorit i instanci class factory => prestane ti fungovat standardni
registrace COMu pomoci '/regserver'. No a to je myslim vse, doufam, ze jsem
na nejaky "spek" nezapomnel.

O  

> -----Původní zpráva-----
> delam program, ktery ma v sobe COM objekt, ktery si jina aplikace muze
> vytvorit a pouzit. Jako factory jsem pouzil TComObjectFactory, ktery
> vytvarim v initialization unity. Jako threading model jsem pouzil
> Apartment a potreboval bych ovlivnit v jakem threadu se mi budou metody
> objektu spoustet. Zatim se mi spousti v hlavnim, jenomze ja potrebuji
> uvnitr volani pockat na nejakou cinnost uzivatele. Toho jsem dosahl
> zatim jen volanim Application.ProcessMessages, ale idealni by bylo mit
> druhy thread ve kterem by se mi metody spousteli a s aplikaci by se
> synchronizoval pomoci Eventu. Jde to v delphi udelat? Jestli jsem
> pochopil spravne, tak by takovy thread musel mit vlastni smycku zprav.
> Je to v delphi nejak podporovano?